/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package systole.ioHandling.printers;

import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPrintPage;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import systole.view.utils.ErrorDialog;

/**
 *
 * @author jmj
 */
public class PrinterManager {

	

    /**
     * @param file
     */
    public void printReport(File file) {
        try {

            FileInputStream fis = new FileInputStream(file);
            FileChannel fc = fis.getChannel();
            ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
            PDFFile pdfFile = new PDFFile(bb); // Create PDF Print Page
            PDFPrintPage pages = new PDFPrintPage(pdfFile);

// Create Print Job
            PrinterJob pjob = PrinterJob.getPrinterJob();
            PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
            pjob.setJobName(file.getName());
            Book book = new Book();
            book.append(pages, pf, pdfFile.getNumPages());
            pjob.setPageable(book);

            if (pjob.printDialog()) {
                pjob.print();
            }
// Send print job to default printer
        } catch (FileNotFoundException ex) {
            ErrorDialog.showError(null, "No se pudo imprimir el reporte");
        } catch (IOException ex) {
            ErrorDialog.showError(null, "No se pudo imprimir el reporte");
        } catch (PrinterException ex) {
            ErrorDialog.showError(null, "No se pudo imprimir el reporte");
        }
    }
}
